package com.lg.patter.behavior.delegate;

/**
 * 委托模式
 * <p>
 * -在这个例子里，类模拟打印机Printer拥有针式打印机RealPrinter的实例，
 * Printer拥有的方法print()将处理转交给RealPrinter的方法print()。
 *
 * 定义：
 *  在委托模式中，有两个对象参与处理同一个请求，接受请求的对象将请求委托给另一个对象来处理。
 *  是一种特殊的静态代理， 可以理 解为全权代理， 但是代理模式注重过程，
 *  而委派模式注重结果。委派模式属于行为型模式， 不属于GOF 23 种设计模式中。
 *
 * 好处：
 *  通过任务委派能够将—个大型的任务细化，然后通过统—管理这些子任务的完成情况实现任务的跟进，
 *  能够加快任务执行的效率。
 *
 * 不足：
 *  任务委派方式需要根据任务的复杂程度进行不同的改变，在任务比较复杂的情况下可能需要进行多 重委派，
 *  容易造成索乱。
 *
 * @author by Mr. Li 2020/6/16 11:03
 */
public class DelegateTest {
    // to the outside world it looks like Printer actually prints.
    public static void main(String[] args) {
        Printer printer = new Printer();
        printer.print();
    }
}

class RealPrinter {// the "delegate"

    void print() {
        System.out.println("something...");
    }
}

class Printer { // the "delegator"
    RealPrinter p = new RealPrinter(); // create the delegate

    void print() {
        p.print(); // delegation
    }
}